package com.shujia

/**
 * 在scala没有static关键字，怎么去区分静态方法？
 * object："类对象"
 * class："普通的类"
 * 由object修饰的类中所有的方法以及变量都是静态的，可以直接通过"类对象"进行调用
 * 由class修饰的类中所有的方法以及变量都是普通的，需要通过"类的对象"进行调用
 */
object Demo1ScalaClass {

  // 定义了一个变量i
  val i = 10

  def printS(str: String): Unit = {
    // 实际上底层还是调用Java中的println方法
    // Scala和Java它们的底层原理都是一样的
    println(str)
  }

  def main(args: Array[String]): Unit = {

    println("Hello Scala")

    println(Demo1ScalaClass.i)

    Demo1ScalaClass.printS("类对象的方法可以直接通过类对象进行调用")

    new Demo1ScalaClass().printC("普通类的成员方法")
  }

}

class Demo1ScalaClass {
  // main方法需要在object中定义
  //  def main(args: Array[String]): Unit = {
  //    println("普通类的成员方法")
  //  }
  def printC(str: String): Unit = {
    println(str)
  }

}
